from dataclasses import dataclass


# 装饰器的作用：dataclass相较于dict和tuple具有明显优势。
# 它能更精确地指定每个成员变量的类型，同时提供字段名的检查，
# 大大降低了出错的可能性。
# 相对于传统的类定义，使用dataclass更加简洁，省去了冗长的__init__方法等，只需直接列出成员变量即可。
# 数据类更易于阅读和理解，类型提示使得读者更自然地理解数据的组织结构。
# 当数据类清晰明了时，读者更容易形成准确的假设，也更容易发现并修复潜在的错误。
@dataclass(order = False)
class Car1:
    make: str
    model: str
    year: str
    odometer: int = 0

    def set_odometer(self, odometer):
        self.odometer = odometer

    def driver(self, a):
        self.odometer += a


def car_test():
    your_car = Car1("奥迪", "A4", "20240801")
    print(your_car)
    # ①直接修改属性值:对象名.属性 = val
    # 汽车生产完以后需要做十公里的测试
    your_car.odometer = 10
    print(your_car)
    # ②通过方法设置属性值: 对象名.方法()
    # 发现路测实际距离是13公里，但是表显是10公里，此时需要校准历程表
    your_car.set_odometer(13)
    print(your_car)
    # ③通过方法不断增加
    # 驾驶会导致里程表不断增加
    your_car.driver(200)
    print(your_car)


if __name__ == "__main__":
    car_test()